package br.ucb.ucblive.beans;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table (name="evento")
public class Evento {

	private int idEvento;
	private Usuario usuario;
	private Curso curso;
	private String titulo;
	private String conteudo;
	private Date dataInicio;
	private Date dataFim;
	private Date dataCriacao;
	private Date dataAlteracao;
	private byte[] fotoEvento;
	
	public Evento(){}

	@Id
	@GeneratedValue
	public int getIdEvento() {
		return idEvento;
	}

	public void setIdEvento(int idEvento) {
		this.idEvento = idEvento;
	}

	@ManyToOne
	@JoinColumn (name="login")
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@ManyToOne
	@JoinColumn (name="idCurso")
	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	@Column
	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	@Column
	public String getConteudo() {
		return conteudo;
	}

	public void setConteudo(String conteudo) {
		this.conteudo = conteudo;
	}

	@Column
	@Temporal(TemporalType.DATE)
	public Date getDataInicio() {
		return dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	@Column
	@Temporal(TemporalType.DATE)
	public Date getDataFim() {
		return dataFim;
	}

	public void setDataFim(Date dataFim) {
		this.dataFim = dataFim;
	}

	@Column
	@Temporal(TemporalType.TIMESTAMP)
	public Date getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	@Column
	@Temporal(TemporalType.TIMESTAMP)
	public Date getDataAlteracao() {
		return dataAlteracao;
	}

	public void setDataAlteracao(Date dataAlteracao) {
		this.dataAlteracao = dataAlteracao;
	}
	
	@Lob
	@Column
	public byte[] getFotoEvento() {
		return fotoEvento;
	}

	public void setFotoEvento(byte[] fotoEvento) {
		this.fotoEvento = fotoEvento;
	}

	@Override
	public String toString() {
		return "Evento [idEvento=" + idEvento + ", usuario=" + usuario
				+ ", curso=" + curso + ", titulo=" + titulo + ", conteudo="
				+ conteudo + ", dataInicio=" + dataInicio + ", dataFim="
				+ dataFim + ", dataCriacao=" + dataCriacao + ", dataAlteracao="
				+ dataAlteracao + "]";
	}	
}
